1. Field of the Invention
The present invention generally relates to the field of distributed object oriented computing and, more particularly, to a method for fault tolerance, load balance and “failover” of CORBA object servers via name service clustering.
2. Description of the Related Art
Recently, Common Object Request Broker Architecture (CORBA) has emerged as the de facto standard architecture for distributed object computing. This distributed object infrastructure enables organizations to build and deploy robust distributed object applications across the Internet and enterprise intranets.
Emerging application servers and Enterprise Java Bean (EJB) technology are being built on top of the pre-existing CORBA infrastructure. Remote Method Invocation (RMI) technology takes advantage of the capabilities of the Common Object Request Broker Architecture/Internet Inter Orb Protocol (CORBA/IIOP) infrastructure. As a result, fault tolerance, high availability and the load balancing capability of CORBA object servers become critically important due to the increased system capacity.
For example, a large number of requests to a CORBA object server can cause information bottlenecks at the server (i.e., a decrease in server capacity or a reduction in processing speed). As a result, a single CORBA object server can become the single-point of failure in a network. Moreover, since clients maybe long lived, unavailability of services from a server is unacceptable.
In the past, these problems have been solved by replicating the CORBA servers and performing a load balance by using a predefined algorithm among the replicas to select a specific object server. Load balancing across the servers can be performed with a variety of techniques, such as via a Round Robin directory and a naming service or a special CORBA object server which dispatches requests from clients to servers. However, substantial coding, redesign and reconfiguration of the server, which results in increased costs is unavoidable.
Another solution to the prior problems involves redesigning and replicating the CORBA server, and statically configuring the replica servers such that each server object contains one profile for each replica server object. Upon failure of a server, client requests “failover” to a replica server. However, this configuration is not scalable, i.e., it is not applicable to different servers located in a large network. Once the redesign, replication, and configuration of the server is completed and implemented, it cannot be changed.
A further solution to the above mentioned problems comprises redesigning the client such that it captures failures and redirects requests to another server. However, this approach not only requires client code changes, but also requires that the client possess prior knowledge related to the existence of all the servers in the network. It is therefore apparent there is a need for a method for reducing failures associated with selecting a server located in a distributed object oriented computing environment.